home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #334 (1994-06)(Rhein-Sieg-Soft).zip / Franz PD Disk #334 (1994-06)(Rhein-Sieg-Soft).adf / tracker.library / Demos / Window.asm < prev    next >
Assembly Source File  |  1994-01-09  |  6KB  |  209 lines

  1. ;TestProgramm für "tracker.library"
  2.  
  3. ; Testet TRK_OpenWindow und TRK_CloseWindow
  4. ; benutzt TRK_OpenStdLibrary, TRK_Open
  5.  
  6.         NOLIST
  7.         INCLUDE "exec/LVO.i"
  8.         INCLUDE "exec/memory.i"
  9.         INCLUDE "dos/LVO.i"
  10.         INCLUDE "dos/dosextens.i"
  11.         INCLUDE "intuition/LVO.i"
  12.         INCLUDE "intuition/intuition.i"
  13.         INCLUDE "tracker.i"
  14.         LIST
  15.  
  16. _TrackerBase:   EQUR a5
  17. _DosBase:       EQUR a4
  18. _IntuitionBase: EQUR a3
  19. Output:         EQUR d7
  20.  
  21. ; WB-Message ?
  22.         sub.l   a1,a1           ;a1=0->eigener Task
  23.         CALLEXEC FindTask       ;Wo darf man denn nachschauen ?
  24.         move.l  d0,a0
  25.         tst.l   pr_CLI(a0)      ;von CLI oder WB aus gestartet ?
  26.         bne     fromCLI
  27. ;von WB aus:
  28.         lea     pr_MsgPort(a0),a0
  29.         move.l  a0,-(sp)
  30.         CALL    WaitPort        ;auf Start-Message warten
  31.         move.l  (sp)+,a0
  32.         CALL    GetMsg          ;muß nachher beantwortet werden
  33.         move.l  d0,WBenchMsg
  34.  
  35. fromCLI:
  36. ; Tracker-Library öffnen
  37.         OPENLIB TrName
  38.         tst.l   d0
  39.         beq     ende_all
  40.         move.l  d0,_TrackerBase
  41.         TRK_OPENSTDLIB DOS,36
  42.         tst.l   d0
  43.         beq     ende_trk
  44.         move.l  d0,_DosBase
  45.         TRK_OPENSTDLIB INTUITION,34
  46.         tst.l   d0
  47.         beq     ende_trk
  48.         move.l  d0,_IntuitionBase
  49.  
  50.         tst.l   WBenchMsg
  51.         bne     fromWB
  52. ;von CLI aus -> Ausgaben ins CLI-Fenster
  53.         CALLDOS Output
  54.         move.l  d0,Output
  55.         bra     main
  56. ;von WB aus gestartet -> eigenes Window nötig
  57. fromWB: move.l  #WdName,d1
  58.         move.l  #MODE_OLDFILE,d2
  59.         CALLTRK TRK_Open
  60.         move.l  d0,Output
  61. ;---------------------------------------------------------------------------
  62. ;Haupt-Testteil
  63.  
  64. OPENW:  MACRO   ;Adresse der NewWindow-Struktur, sichern in
  65.         lea     \1,a0
  66.         bsr     OpenWindow
  67.         IFNC    '\2',''
  68.         move.l  d0,\2
  69.         ENDC
  70.         ENDM
  71.  
  72. OPENWT: MACRO   ;Adresse der NewWindow-Struktur, Start TagList, sichern in
  73.         lea     \1,a0
  74.         lea     \2,a1
  75.         bsr     OpenWindowTags
  76.         IFNC    '\3',''
  77.         move.l  d0,\3
  78.         ENDC
  79.         ENDM
  80.  
  81. CLOSEW: MACRO   ;wo gesichert
  82.         move.l  \1,a0
  83.         bsr     CloseWindow
  84.         ENDM
  85.  
  86. main:   OPENW   nw1,d6
  87.         OPENWT  nw5,t5,d5
  88.         OPENW   nw2
  89.         OPENW   nw3,d4
  90.         OPENWT  0,t6,d3
  91.         CLOSEW  d5
  92.         OPENWT  0,t7
  93.         CLOSEW  d4
  94.         OPENW   nw4,d5
  95.         CLOSEW  d3
  96.  
  97. ;---------------------------------------------------------------------------
  98.  
  99. ;ggf. Abschieds-Message
  100.         tst.l   WBenchMsg
  101.         beq     ende_trk
  102.         move.l  Output,d1
  103.         move.l  #GoodBye,d2
  104.         move.l  #GoodByeLen,d3  ;jetzt sind die Speicher-Pointer uninteressant
  105.         CALLDOS Write
  106.         move.l  #150,d1
  107.         CALL    Delay
  108. ;Library schließen
  109. ende_trk:
  110.         CLOSELIB _TrackerBase
  111. ende_all:
  112.         tst.l   WBenchMsg       ;war da was ?
  113.         beq     toCLI           ;na dann halt nicht
  114. ;Message zur WB zurück
  115.         move.l  WBenchMsg,a1
  116.         CALLEXEC ReplyMsg
  117. toCLI:  moveq   #0,d0
  118.         rts
  119. ;---------------------------------------------------------------------------
  120. ;Unterroutine: TRK_OpenWindowTagList testen
  121. ;Parameter: a0 = Adresse einer NewWindow-Struktur
  122. ;           a1 = Adresse des 1. Tags
  123. ;Ergebnis: Adresse des geöffneten Windows / 0 bei Fehler
  124.  
  125. OpenWindowTags:
  126.         movem.l d2/d3,-(sp)             ;d2/d3 sichern
  127.         CALLTRK TRK_OpenWindowTagList
  128.         move.l  #OpenTagsText,d2
  129.         bra     PostOpenWindow
  130. ;---------------------------------------------------------------------------
  131. ;Unterroutine: TRK_OpenWindow testen
  132. ;Parameter: a0 = Adresse einer NewWindow-Struktur
  133. ;Ergebnis: Adresse des geöffneten Windows / 0 bei Fehler
  134.  
  135. OpenWindow:
  136.         movem.l d2/d3,-(sp)     ;d2/d3 sichern
  137.         CALLTRK TRK_OpenWindow
  138.         move.l  #OpenText,d2
  139. PostOpenWindow:
  140.         move.l  d0,-(sp)        ;d0=2. Ausgabeparameter
  141.         move.l  #wd_Title,a0
  142.         move.l  0(a0,d0.l),-(sp) ;Adresse des Window-Titles==1. Parameter
  143.         move.l  Output,d1
  144.         move.l  sp,d3
  145.         CALLDOS VFPrintf
  146.         addq.l  #4,sp           ;1. Parameter löschen
  147.         move.l  #200,d1
  148.         CALL    Delay
  149.         movem.l (sp)+,d0/d2/d3  ;Ergebnis und d2/d3 holen
  150.         rts
  151. ;---------------------------------------------------------------------------
  152. ;Unterroutine: TRK_CloseWindow testen
  153. ;Parameter: a0 = Adresse des Windows
  154. ;Ergebnis: -
  155.  
  156. CloseWindow:
  157.         move.l  a1,d0
  158.         bne     1$
  159.         rts
  160. 1$:     movem.l d2/d3/a1,-(sp)  ;Register sichern
  161.         CALLTRK TRK_CloseWindow
  162.         move.l  Output,d1
  163.         move.l  #CloseText,d2
  164.         moveq   #8,d3
  165.         add.l   sp,d3
  166.         CALLDOS VFPrintf
  167.         movem.l (sp)+,d2/d3/a1  ;Register zurück
  168.         rts
  169. ;---------------------------------------------------------------------------
  170.  
  171. WBenchMsg:      dc.l    0
  172.  
  173. NEWWIN: MACRO   ;linker, oberer Rand, Breite, Höhe, Flags, Titel
  174.         dc.w    \1,\2,\3,\4
  175.         dc.b    -1,-1
  176.         dc.l    0,\5,0,0,\6,0,0
  177.         dc.w    1,1,640,256,WBENCHSCREEN
  178.         ENDM
  179.  
  180. nw1:    NEWWIN  10,10,300,50,WFLG_DRAGBAR|WFLG_ACTIVATE|WFLG_BORDERLESS,wt1
  181. nw2:    NEWWIN  320,10,300,70,WFLG_DEPTHGADGET|WFLG_SIZEGADGET,wt2
  182. nw3:    NEWWIN  20,130,290,60,WFLG_RMBTRAP|WFLG_SIZEGADGET|WFLG_SIZEBBOTTOM,wt3
  183. nw4:    NEWWIN  340,150,295,20,WFLG_CLOSEGADGET|WFLG_SMART_REFRESH,wt4
  184. nw5:    NEWWIN  10,70,300,11,WFLG_ACTIVATE,wt5
  185.  
  186. t5:     dc.l    WA_Left,15,WA_Top,55,TAG_END
  187. t6:     dc.l    WA_Left,320,WA_Top,65,WA_Title,wt6
  188.         dc.l    WA_Width,320,WA_Height,100,TAG_END
  189. t7:     dc.l    WA_Top,320,WA_Left,200,WA_Width,320,WA_Height,25
  190.         dc.l    WA_Title,wt7,WA_DragBar,1,TAG_END
  191.  
  192. TrName: TRACKERNAME
  193.  
  194. OpenTagsText: dc.b "Window ",34,"%s",34," opened with tags, Window-structure at $%06lx",10,0
  195. OpenText: dc.b "Window ",34,"%s",34," opened, Window-structure at $%06lx",10,0
  196. CloseText: dc.b  "Window at $%06lx closed",10,0
  197. WdName: dc.b    "CON:////Window-Test für tracker.library",0
  198. GoodBye: dc.b   10,"Bye - closing soon !"
  199. GoodByeLen: equ *-GoodBye
  200. wt1:    dc.b    "Window #1",0
  201. wt2:    dc.b    "Window #2",0
  202. wt3:    dc.b    "Window #3",0
  203. wt4:    dc.b    "Window #4",0
  204. wt5:    dc.b    "Window #5",0
  205. wt6:    dc.b    "Window #6",0
  206. wt7:    dc.b    "Window #7",0
  207.  
  208.         END
  209.